package com.cskaoyan.day3._04_homework;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author Common-zhou
 * @since 2023-03-02 09:28
 */
public class Homework1_1 {
    public static void main(String[] args) {
        //1, 如果List中存储了多个User对象, 去除重复元素(多个重复元素仅保留一个)
        // (昨天是用Collection独有方法, 今天试着用List的独有方法 )
        //User user = new User("zs", 18);
        //User user1 = new User("zs", 18);

        List<User> list = new ArrayList<>();
        list.add(new User("zs", 18));
        list.add(new User("zs", 19));
        list.add(new User("zs", 19));
        list.add(new User("ls", 19));
        list.add(new User("wu", 19));

        //List<User> candidateUsers = new ArrayList<>();
        //for (User user2 : list) {
        //    if (!candidateUsers.contains(user2)) {
        //        // 不包含 User  直接添加到我们的List中
        //        candidateUsers.add(user2);
        //    }
        //}
        //System.out.println(candidateUsers);


        //Iterator<User> iterator = list.iterator();
        //while (iterator.hasNext()) {
        //    User next = iterator.next();
        //    if (list.indexOf(next) != list.lastIndexOf(next)) {
        //        // 判断一下 User 出现的第一次下标，和最后一次下标 不相同。
        //        //list.remove(next);
        //        iterator.remove();
        //    }
        //}
        //System.out.println(list);

        List<User> candidateUsers = new ArrayList<>();
        for (User user2 : list) {
            //candidateUsers.contains("");
            if (candidateUsers.indexOf(user2) == -1) {
                // 不包含 User  直接添加到我们的List中
                candidateUsers.add(user2);
            }
        }
        System.out.println(candidateUsers);


        //user.equals(user1);
        //user.equals(user);


    }
}

/**
 * 类名： 大驼峰
 * 变量：有哪些变量； 变量的命名
 */
class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // equals --》 判断两个对象相不相等


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return age == user.age && Objects.equals(name, user.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public String toString() {
        return "User{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}
